package com.smartStatus.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.smartStatus.api.entity.SysRole;
import com.smartStatus.api.entity.SysUser;
import com.smartStatus.api.vo.TreeNodeVo;
import com.smartStatus.core.util.R;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @ClassName : SysRoleService
 * @Author : lby
 * @Date: 2020/12/29 10:09
 * @Description :
 */
public interface SysRoleService extends IService<SysRole> {

    SysRole getRoleInfo(Integer id);

    /**
     * 删除角色
     */
    Boolean delRole(Integer id);

    /**
     * 添加角色菜单关系
     */
    Boolean addRoleMenus(@Param("id") Integer id, @Param("menuId") Integer menuId);

    /**
     * 获取角色对应的菜单
     */
    List<Integer> getMenuIds(SysRole sysRole);

    /**
     * 删除角色对应的菜单
     */
    Boolean delMenus(Integer id);

    /**
     * 查询用户角色
     */
    List<SysRole> getUserRoleLists(SysUser sysUser);

    /**
     * 删除用户角色
     */
    Boolean delUserRoleList(SysUser sysUser);


    /**
     * 获取角色对应的权限树
     * @param sysRole
     * @return
     */
    R getPermissionTree(String parentId);


    /**
     * 加载菜单树
     * @param roleId
     * @return
     */
    R buildRoleTree(Integer roleId);


    /**
     * 关联菜单权限关系
     * @param treeNodeVoList
     * @return
     */
    R addRoelMenuTree(Map<String, Object> map);


    /**
     * 添加角色
     * @param sysRole
     * @return
     */
    R addRole(SysRole sysRole);
}
